Presentation and manipulation of data is a long-standing principal use of computing systems. Various different charts, graphs, or other approaches are used to present data to a human user. Such approaches are often referred to as “visualizations” of the data. For example, a popular visualization is a graph that includes nodes connected by lines or “edges.” Such node-edge graphs can include a hierarchical tree structure where a root node is at the top, bottom, left or right of a display. Another type of node-edge graph is a circular graph where the root node may be in the middle of the display surrounded by successive children nodes in expanding concentric circles. Other variations of the node-edge graph are possible, as are many other types or varieties of visualizations.
It is often useful or important to view how a graph has changed over time. But navigating the graph through different time-periods can be problematic. In the cases where visualizations are large, or there may be more than one person, group, business organization, software agent or other “actor” manipulating and changing a graph it may be difficult to convey changes over time efficiently.
Many applications need to present large graphs to users for visual navigation. Presenting large graphs (hundreds of thousands of nodes, millions of edges) is challenging for several reasons. Generally only a small subset of nodes can be displayed, the graphs are difficult to lay out in a manner that makes them easy to navigate, and the visual representation of the nodes can be challenging. Finally, some applications are interested not just in the graph as it exists today, but need to show how it changed over time. Visualization operations can be much more difficult when the application is a web application working with large graphs.
Many graph visualization tools use a physics engine or a simplified variant that uses a small set of forces to make nodes separate (and animate) on the display. These calculations run repeatedly over all the nodes in the graph, resulting in automatic layouts. Nodes seem to move into place. This is problematic as graphs become very large, the animation slows down and takes too long as the number of nodes increases. Many other graph engines calculate a static layout and then display the graph based on that layout. Static layout tools generally result in static displays.